import java.util.List;


public class Funcao implements Comando {

	private String nome;
	private List<AcaoSemantica> conteudo;
	private List<Variavel> parametros;
	
	public Funcao(String nome, List<AcaoSemantica> conteudo,
			List<Variavel> parametros) {
		this.nome = nome;
		this.conteudo = conteudo;
		this.parametros = parametros;
	}

	@Override
	public String getCode() {
		StringBuffer sb = new StringBuffer();

		sb.append(nome + " PROC ");
		for (int i = 0; i < parametros.size(); i++) {
			Variavel v = parametros.get(i);
			sb.append(v.getNomeVariavel());
			if (i != parametros.size()-1) {
				sb.append(", ");
			}
		}
		sb.append(System.lineSeparator());
		
		for (AcaoSemantica as : conteudo) {
			if (as instanceof Generico) {
				Generico g = (Generico) as;
				if (g.getNome().equals("return")) {
					sb.append("RET");
					sb.append(System.lineSeparator());
				}
			} else {
				sb.append(as.getCode());
				sb.append(System.lineSeparator());
			}
		}
		
		sb.append(nome + " ENDP");
		sb.append(System.lineSeparator());		
		
		return sb.toString();
	}

	
	
}
